package com.joven.product.api.business.service.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.PositiveOrZero;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 商品创建参数
 * </p>
 *
 * @author Joven
 * @date 2022-01-06 18:21:27
 */
@Data
@ApiModel("商品创建参数")
public class ProductCreateDTO {

    @NotNull(message = "创建人id不能为空")
    @ApiModelProperty("创建人id")
    private Long createUser;

    @ApiModelProperty("创建人名称")
    private String createUserName;

    @ApiModelProperty("商品名称")
    @NotBlank(message = "商品名称不能为空")
    private String name;

    @ApiModelProperty("商品价格")
    @NotNull(message = "商品价格不能为空")
    @PositiveOrZero(message = "商品价格不能为负数")
    private BigDecimal price;

    @ApiModelProperty("商品分类id")
    @NotNull(message = "商品分类id不能为空")
    private Long categoryId;

    @ApiModelProperty("供应商id")
    @NotNull(message = "供应商id不能为空")
    private Long supplierId;

    @ApiModelProperty("商品属性")
    @NotEmpty(message = "商品属性不能为空")
    private List<@Valid ProductAttribute> attributes;

    @Data
    @ApiModel("商品创建参数-商品属性")
    public static class ProductAttribute {

        @ApiModelProperty("属性名称")
        @NotBlank(message = "属性名称不能为空")
        private String name;

        @ApiModelProperty("属性值")
        @NotBlank(message = "属性值不能为空")
        private String value;

        @ApiModelProperty("属性类型：1基本属性，2销售属性")
        @NotNull(message = "属性类型不能为空")
        private Integer type;
    }
}